import axios from 'axios';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import store from '@/store';

//创建axios实例
const request = axios.create({
  baseURL: `${ process.env.VUE_APP_API }/api`,
  timeout: '2000',
});

//配置请求拦截器
request.interceptors.request.use((config) => {
  //开启进度条
  NProgress.start();
  // console.log(store.state.user.userTempId);
  //每次发送请求都要 请求头都要带上userTempId
  config.headers.userTempId = store.state.user.userTempId;
  config.headers.userId = store.state.user.userinfo.userId;
  config.headers.token = localStorage.getItem('token');

  return config;
});

//配置响应拦截器
request.interceptors.response.use(
    (response) => {
      //关闭进度条
      NProgress.done();

      //对于我们的成功来说,不但响应状态码是200,并且请求回来的数据中的后端给的code码也是200才可以
      //举个例子:登录的时候返回密码错误,但是响应状态码是200,但是数据中code是207,这就不是我们想要的
      if (response.data.code === 200) {
        //当拿到我们想要的数据后,直接返回想要的数据(response.data只是后台返回的整体数据,我们想要的数据在response.data.data)
        return response.data.data;
      }
      return Promise.reject({ message: response.data.message });
    },
    (error) => {
      //关闭进度条
      NProgress.done();
      return Promise.reject(error);
    },
);

//把axios实例暴露出去
export default request;
